CS236 Deep Generative Models Lecture 4
课程主页:https://deepgenerativemodels.github.io/
课件资料:https://github.com/Subhajit135/CS236_DGM,https://github.com/deepgenerativemodels/notes
视频地址:https://www.bilibili.com/video/av81625948?from=search&seid=4636291486683332935
这里回顾CS236 Lecture 4的课程内容,这一讲介绍了自回归模型以及KL散度。
RNN: Recursive Neural Nets
在模型$p\left(x_{t} | x_{1: t-1} ; \boldsymbol{\alpha}^{t}\right)$中,历史$x_{1:t-1}$会越来越长,这样会产生内存和计算上的负担,解决该问题的思想是对之前的历史进行总结然后递归的更新它,根据该思想产生了RNN,其结构如下:
RNN的优势如下:
- 可以处理任意长的序列
- 非常通用
劣势如下:
- 仍然需要顺序
- 序列计算似然值(导致训练速度慢)
- 序列化生成
- 很难训练(梯度爆炸/消失)
后续介绍几个具体例子。
Pixel RNN (van den Oord, 2016)
按照光栅扫描顺序计算每个像素值,其中每个像素值的概率计算方式如下:
利用该方式可以进行补图片的工作,其效果如下:
PixelCNN
PixelCNN的思想是,利用像素周围的内容,使用卷积结构预测该像素值;注意为了保留自回归性,在卷积时需要使用masked convolution:
Adversarial Attacks and Anomaly detection
机器学习方法容易受到对抗样本的攻击,以下图为例:
利用生成模型的方法可以处理上述问题:
- 在干净输入上训练生成模型$p(x)$(PixelCNN)
- 定新的输入$\bar x$,计算$p(\bar x)$
- 抗性样本计算的$p(x)$应该非常小
这部分以及上一讲的内容都是介绍模型,后续部分介绍如何学习模型。
Maximum Likelihood Learning
KL-divergence
我们的目标是得到一个好的模型,评判好坏自然要有一个度量,在生成模型中,我们的模型是一个概率分布,最常见的度量是KL散度:
其中$p,q$为概率分布。
利用Jason不等式,我们有
所以$\begin{equation}D(p | q) \geq 0\end{equation}$,并且当且仅当$p=q$时等号成立。
Expected log-likelihood
我们的目标是使$\mathbf{D}\left(P_{\text {data }} | P_{\theta}\right)$尽可能小,注意有如下恒等式“
上述第一项和$P_\theta$无关,所以我们只要使第二项尽可能小即可:
但是依然有一个问题,我们无法计算最后一项,因为$P_{\text{data}}$无法知晓,解决该问题的方法是使用经验分布代替,即使用
代替
所以我们的任务是
或者等价的,最大化数据的似然性: